#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL;
namespace Cephei.QL.Methods.Montecarlo
{
     // <summary> 
	// ! This class generates normalized (i.e., unit-variance) paths as sequences of variations. In order to obtain the actual path of the underlying, the returned variations must be multiplied by the integrated variance (including time) over the corresponding time step.  \ingroup mcarlo
	// </summary>
    [Guid ("AB56E326-A153-4489-8F6E-0A7F859531FE"),ComVisible(true)]
	public interface IBrownianBridge 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 UInt64 Size {get;}
        
		 Cephei.IVector<Double> Times {get;}
    }

    // <summary> 
	// ! This class generates normalized (i.e., unit-variance) paths as sequences of variations. In order to obtain the actual path of the underlying, the returned variations must be multiplied by the integrated variance (including time) over the corresponding time step.  \ingroup mcarlo Factory
	// </summary>
   	[ComVisible(true)]
    public interface IBrownianBridge_Factory // : Collection_Factory<IBrownianBridge, ICell<IBrownianBridge>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    IBrownianBridge Create (Cephei.QL.ITimeGrid timeGrid);
        
	    IBrownianBridge Create (Cephei.IVector<Double> times);
        
	    IBrownianBridge Create (UInt64 steps);
    }
}

